home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / p / pofo / sprachen / pbasic / pbas21 / pbasic.txt < prev    next >
Encoding:
Text File  |  1991-08-22  |  26.7 KB  |  892 lines

  1. Portfolio BASIC, version 2.1  (c) 1990 BJ Gleason
  2.  
  3. by BJ Gleason,  The American University
  4.  
  5.  
  6. INTRODUCTION
  7.  
  8.           PBASIC is a simple BASIC interpreter.  It only requires
  9.      30k of disk space and about 43k of memory to run.  PBASIC is
  10.      a batch oriented interpreter.  It will also interact with
  11.      the built-in editor for program development.
  12.  
  13.           PBASIC was one of the winners in the Compuserve/
  14.      Portfolio Conference Programming Contest, 1990.
  15.  
  16.  
  17. A NOTE FROM THE AUTHOR
  18.  
  19.           As of this release, PBASIC is only going to upgraded
  20.      for bug fixes for a while.  This interpreter started out as
  21.      a "see if I can do it project."  Because writing it and
  22.      upgrading it is so much fun, it has kept me from doing some
  23.      of my other work.
  24.  
  25.           Due in large part to the positive encouragement of the
  26.      people who have used it, I have added floating point,
  27.      arrays, virtual screen manipulation and printer support for
  28.      this version.  The next step will be strings and files, but
  29.      they will require a bit of thought on implementation design. 
  30.      As it stands, the current design is a bit of a hack (read
  31.      that as totally), and is getting a bit awkward to work with.
  32.  
  33.           Over the next few months, I will maintain and release
  34.      new versions of 2.0 as the occasion merits.  I will still be
  35.      very receptive to your ideas, and look forward to talking to
  36.      you.  Some of the things I am working on include: strings,
  37.      files, making the interpreter a .RUN file so more memory is
  38.      available, and converting to code to C++.
  39.  
  40.           A number of considerate users have offered their help. 
  41.      If you have an interesting application that you have
  42.      developed in PBASIC, I will be more than happy to distribute
  43.      your code in future releases.  Please make sure to place
  44.      your name and other information as REMarks in the program. 
  45.      You can include a documentation file as well.  The only
  46.      thing that I ask is that you do not charge for the use of
  47.      your program, as I am not charging for the use of this
  48.      interpreter.  Send me a note, and tell me where the code is
  49.      and I will include it in the package.
  50.  
  51.           Thanks to all you have helped and are going to help!
  52.  
  53. DESIGN CONSIDERATION
  54.  
  55.           When I was laying out the initial design of PBASIC,
  56.      here are some of the topics I took into consideration:
  57.  
  58.           - Microsoft BASIC compatible.
  59.           - Size of Interpreter (as small as possible).
  60.           - Unique features of the Portfolio.
  61.           - Using the Built-in editor for Program Editing.
  62.           - Reasonable size BASIC programs.
  63.  
  64.  
  65. NEW FEATURES FOR VERSION 2.1
  66.  
  67.      New Statements: DATA, READ, RESTORE
  68.      New Functions : LOG
  69.      TRON invoked from command line switch -T
  70.      Adjusted the screen coordinates from 0,0 to 1,1 to match
  71.           GWBASIC.  While this will cause some incompatibilities
  72.           with previous versions of PBASIC, it will make it more
  73.           compatible with GWBASIC.
  74.  
  75.  
  76. INTERFACING WITH THE EDITOR
  77.  
  78.           Instead of trying to create an editor, PBASIC makes
  79.      full use of the built in editor.
  80.  
  81.           If you run BASIC without any parameters, it will load
  82.      the last file you used in the editor.  To speed up the
  83.      process, you might want to rename PBASIC.EXE to P.EXE, so
  84.      you only need to type P<RETURN> at the prompt.  You can also
  85.      specify a file to execute on the command line.
  86.  
  87.           Whenever an error is detected, an error message is
  88.      displayed, along with the line number.  Press any key and
  89.      PBASIC will invoke the built-in editor and point to the
  90.      error position.  This will only happen if the file you are
  91.      executing is the same as the one you are editing.  On other
  92.      systems, you will be returned to the DOS prompt.
  93.  
  94.           ALTR.COM is a small TSR program that will, only from
  95.      inside the editor, save the current file and invoke PBASIC. 
  96.      PBASIC.EXE should be rename P.EXE for the <ALT-R> command to
  97.      work.  ALTR takes up about 450 bytes.  It can be removed by
  98.      rebooting the machine.  It can only be loaded into memory
  99.      once.  The <ALT-R> command will only work inside the editor.
  100.  
  101.           When the program is finished, PBASIC will wait for a
  102.      keypress and then return you to the editor.
  103.  
  104.  
  105. RUNNING PBASIC
  106.  
  107.           There are two forms to execute PBASIC:
  108.  
  109.                PBASIC [-T]
  110.  
  111.                PBASIC filename.ext [-T]
  112.  
  113.           In the first form, the default file is the last one
  114.      edited in the built-in editor on the Portfolio.  The second
  115.      form loads and executes the specified file.  You must
  116.      include the extension of the filename.
  117.  
  118.           If you have run the ALTR program before editing your
  119.      code, you can execute PBASIC by pressing <ALT-R>.
  120.  
  121.           The command line switch -T will turn on the trace
  122.      feature.  This is the same as putting TRON at the beginning
  123.      of you program.
  124.  
  125.  
  126. GENERAL
  127.  
  128.      Source code is standard ASCII format.
  129.  
  130.      Source code can be in upper or lower case.
  131.  
  132.      200 floating point variables.  Variable names can not exceed
  133.      8 characters in length.
  134.  
  135.      FOR/NEXT loops may be nested 10 deep.
  136.  
  137.      GOSUBs may be nested 10 deep.
  138.  
  139.      Line numbers are not required for each statement.  Only 100
  140.      line numbers are allowed.  They do not have to be in
  141.      sequence.  Line numbers can range from 0 to 99999.
  142.  
  143.      Multiple statements per line (:) is supported.
  144.  
  145.  
  146. DEVELOPING PROGRAMS WITH GWBASIC
  147.  
  148.           You can develop your programs on the PC with Microsoft
  149.      BASIC or QuickBASIC.  If using Microsoft BASIC, be sure to
  150.      save the file in ASCII format [ SAVE "myfile",A ] so that it
  151.      can be read by PBASIC.  
  152.  
  153.      Do NOT attempt to use the Portfolio statements on the PC.
  154.  
  155.           Starting with version 2.0, all variables are floating
  156.      point.  The statement DEFINT A-Z  will now generate a syntax
  157.      error in PBASIC, since it has not been implemented yet.  It
  158.      is no longer treated as a remark.
  159.  
  160.  
  161. MATH EXPRESSIONS
  162.  
  163.           Single precision math.  Parentheses supported. 
  164.      Standard operator evaluation.  Hexidecmial and Octal
  165.      constants are supported.
  166.  
  167.           - negation
  168.           ^ exponent
  169.           * multiply
  170.           / divide
  171.           % remainder (MOD)
  172.           \ integer division
  173.           + addition
  174.           - subtraction
  175.      
  176.  
  177. NOTES ON CONVENTIONS USED
  178.  
  179.      An expression (exp) can contain variables, constants.  When
  180.      a dummy exp is indicated, it is suggested that you use a
  181.      constant, i.e. POS(0).
  182.  
  183.      A variable name (varname) must be used when indicated.
  184.  
  185.      Unless otherwise noted, all parameters can be constants,
  186.      variables or equations.
  187.  
  188.      
  189. BASIC STATEMENTS
  190.  
  191.           I have tried to keep the syntax and semantics for the
  192.      statements as close to Microsoft BASIC as possible.  The
  193.      notes presented indicate exceptions.  There are some
  194.      statements included the are not from Microsoft.  They will
  195.      not run on GWBASIC.
  196.  
  197.  
  198.      CLS
  199.  
  200.                Clears the screen.
  201.  
  202.  
  203.      DATA      list of numbers
  204.  
  205.                Allows for numbers to be stored inline.  Data
  206.                statements MUST have a line number.  Numbers are
  207.                separated by commas.  Data statements may be
  208.                located on any line of the program.
  209.                     12 DATA 1,2,3,4,5,6
  210.  
  211.  
  212.      DEF SEG   = exp
  213.  
  214.                Assigns a segment address for direct memory
  215.                accessing via PEEK, POKE and CALL.
  216.  
  217.  
  218.      DIM       varname(size)[,varname(size)....]
  219.  
  220.                Creates a one dimensional array of single
  221.                precision floating point variables.  Arrays start
  222.                at 0.  Arrays are not initialized to a value. 
  223.                Arrays must be defined before they are used. 
  224.                Upper arrays bounds are not checked, arrays are
  225.                not allowed to go below 0.
  226.  
  227.  
  228.      END
  229.  
  230.                SYSTEM and END have the same effect.
  231.  
  232.  
  233.      FOR       varname = exp TO exp [STEP exp]
  234.  
  235.                You can not use an array element for varname.
  236.  
  237.  
  238.      FORMFEED
  239.  
  240.                Send a formfeed to the printer.  NOT GWBASIC.
  241.  
  242.  
  243.      GOSUB     line number
  244.  
  245.  
  246.      GOTO      line number
  247.  
  248.  
  249.      IF        exp THEN statement [ ELSE statement ]
  250.  
  251.  
  252.      INPUT     ["prompt" (,|;)] varname
  253.  
  254.                Read an integer from the keyboard.  Only one
  255.                variable is allowed per input.  If a comma (,)
  256.                separates the prompt string and the varname, no
  257.                question mark (?) will be printed.  If a semi-
  258.                colon (;) is used, the question mark will appear. 
  259.  
  260.  
  261.      LOCATE    row,col
  262.  
  263.                Move the cursor to row, col.
  264.  
  265.  
  266.      LPRINT    list of expressions
  267.  
  268.                Send output to printer.  See PRINT.
  269.  
  270.  
  271.      NEXT      [varname]
  272.  
  273.                You can not use an array element for varname.
  274.  
  275.  
  276.      ON        exp  GOTO  list of line numbers
  277.  
  278.  
  279.      ON        exp  GOSUB list of line numbers
  280.  
  281.  
  282.      OUT       port, exp
  283.  
  284.                Send value to the indicated port.
  285.  
  286.                
  287.      POKE      addr, exp
  288.  
  289.                Places value at SEG:addr.  SEG is set via the DEF
  290.                SEG statement.  NOTE: Due to the design of the
  291.                Portfolio, if you poke screen memory (DEF
  292.                SEG=&HB000), the value may not appear.  After you
  293.                poke, you should use the REFRESH statement to
  294.                update the screen.
  295.  
  296.  
  297.      PRINT     list of expressions
  298.  
  299.                List of Expressions can consist of strings,
  300.                variables, constants or expressions, separated by
  301.                the comma (,) or semi-colon (;) or a space ( ).
  302.  
  303.  
  304.      PRINTER   
  305.  
  306.                This is a toggle to start copying all PRINT
  307.                statements to the printer.  Issue it again and it
  308.                will toggle off.  Can be used instead of
  309.                converting all PRINTs to LPRINTs.  Information
  310.                will still be displayed on the screen.  This will
  311.                not wrap the output lines like the screen will. 
  312.                NOT GWBASIC.
  313.  
  314.      PRTSC
  315.  
  316.                This invoke the PRINT SCREEN function to copy the
  317.                screen out to the printer.  If you are using a
  318.                laser printer, you might want to use a FORMFEED
  319.                after this to do a page eject.  NOT GWBASIC.
  320.  
  321.  
  322.      PSET      (row, col) [, exp]
  323.  
  324.                Set the pixel at row, col to exp.  The Portfolio,
  325.                regardless of the screen mode, has a maximum
  326.                64x240 for row, col.  Exp can evaluate to 0 or 1.
  327.  
  328.  
  329.      RANDOMIZE
  330.  
  331.                Initialize the random number generator.
  332.  
  333.  
  334.      READ      list of variables
  335.  
  336.                Read the values of the variables from the DATA
  337.                statements.  Variables can be simple or array.
  338.  
  339.  
  340.      REM
  341.  
  342.                Remark.  The rest of the line is ignored.  You can
  343.                also use the quote (') mark as a REM statement.
  344.  
  345.  
  346.      RESTORE   [line number]
  347.  
  348.                Sets the internal data pointer to the specified
  349.                line number.  Line number specified must be a data
  350.                statement.  If no line number is given, the data
  351.                pointer will point back to the first data
  352.                location.
  353.  
  354.  
  355.      RETURN
  356.  
  357.  
  358.      SCREEN    exp
  359.  
  360.                Set the screen mode.  There is no testing for
  361.                validity.  Some of the values that work on the
  362.                Portfolio are:
  363.  
  364.                      4   graphics  320x200
  365.                      5   graphics  320x200
  366.                      6   graphics  640x200
  367.                      7   text      80x25
  368.                      8   graphics  160x200
  369.                     10   graphics  640x200
  370.  
  371.                These are standard PC modes, but remember that the
  372.                Portfolio Screen is only 240x64.
  373.  
  374.                If you use the screen function of the portfolio,
  375.                it is highly recommend that you set the screen
  376.                back to mode 7 before you exit.  Many portfolio
  377.                utilities only work in mode 7.
  378.  
  379.                At present, text will not be displayed properly on
  380.                a graphics screen.
  381.  
  382.  
  383.      STOP
  384.  
  385.                To allow for "breakpoints", STOP will terminate
  386.                the program and display the line number.  It will
  387.                point the built-in editor to the last position
  388.                executed if the editor file is the same as the
  389.                file being executed.
  390.  
  391.  
  392.      SWAP      varname, varname
  393.  
  394.  
  395.      SYSTEM
  396.  
  397.                END and SYSTEM have the same effect.
  398.  
  399.  
  400.      TROFF
  401.  
  402.                Disable line tracing.
  403.  
  404.  
  405.      TRON
  406.  
  407.                Enable line tracing.  Will display the line number
  408.                in brackets ([x]).  Using this statement will slow
  409.                down the program execution.  Can be placed
  410.                anywhere in program.
  411.  
  412.  
  413.      WAIT
  414.  
  415.                Unlike the GWBASIC version, this only waits for a
  416.                key press.  It gives no prompt and returns no
  417.                value.
  418.  
  419.  
  420. BASIC FUNCTIONS
  421.  
  422.           I have tried to keep the syntax and semantics for the
  423.      functions as close to Microsoft BASIC as possible.  The
  424.      notes presented indicate exceptions.
  425.  
  426.  
  427.      ABS(exp)
  428.  
  429.                Returns the absolute value of exp.
  430.  
  431.  
  432.      ATN(exp)
  433.  
  434.                Returns the Arc Tangent of exp.
  435.  
  436.  
  437.      COS(exp)
  438.  
  439.                Returns the Cosine of exp.
  440.  
  441.  
  442.      CSRLIN
  443.  
  444.                Returns the current cursor line.
  445.  
  446.  
  447.      EXP(exp)
  448.  
  449.                Returns e to the power of exp.
  450.  
  451.  
  452.      FIX(exp)
  453.  
  454.                Returns the integer portion of exp.
  455.  
  456.  
  457.      FRE(exp)
  458.  
  459.                Returns the free amount of memory.  The parameter
  460.                exp is a dummy expression.
  461.  
  462.  
  463.      INP(port)
  464.  
  465.                Returns the byte value from port.
  466.  
  467.  
  468.      INT(exp)
  469.                Returns the integer portion of exp.
  470.  
  471.  
  472.  
  473.      LOG(exp)
  474.  
  475.                Returns the LOG of exp.
  476.  
  477.  
  478.      LPOS(exp)
  479.  
  480.                Returns the current position of the line printer
  481.                head.  Exp is a dummy expression.
  482.  
  483.  
  484.      PEEK(address)
  485.  
  486.                Returns the byte from memory location SEG:address. 
  487.                SEG is set via the DEF SEG instruction.
  488.  
  489.  
  490.      POINT(row,col)
  491.  
  492.                Returns the value of the pixel at row,col.  If
  493.                this function does not appear to work, try running
  494.                FIX0D, to fix the ROM pixel read function.
  495.  
  496.  
  497.      POS(exp)
  498.  
  499.                Returns the current cursor column.  Exp is a dummy
  500.                expression.
  501.  
  502.  
  503.      RAND(exp)
  504.  
  505.                This will return a number between 0 and exp-1. 
  506.                NOT GWBASIC.
  507.  
  508.  
  509.      RND
  510.  
  511.                This will return an number between 0 and 1.
  512.  
  513.  
  514.      SGN(exp)
  515.  
  516.                Returns the sign of exp.
  517.  
  518.                     -1   exp < 0
  519.                      0   exp = 0
  520.                      1   exp > 0
  521.  
  522.      SIN(exp)
  523.  
  524.                Returns the Sine of exp.
  525.  
  526.  
  527.      SQR(exp)
  528.  
  529.                Returns the Square Root of exp.
  530.  
  531.  
  532.      TAN(exp)
  533.  
  534.                Returns the Tangent of exp.
  535.  
  536.  
  537.      TIMER
  538.  
  539.                Returns the number of seconds since midnight.
  540.  
  541.  
  542. PORTFOLIO ONLY STATEMENTS
  543.  
  544.           The statements in this section are specific to the
  545.      Atari Portfolio and will not run on a regular PC.  YOU CAN
  546.      LOCK UP YOUR REGULAR PC IF YOU ATTEMPT TO USE THESE.
  547.  
  548.  
  549.      ALARM
  550.  
  551.                This will beep the speaker, about once a second
  552.                until the user presses a key.  The program will
  553.                then continue with the next statement.
  554.  
  555.  
  556.      BEEP
  557.  
  558.                This will cause a single beep from the speaker.
  559.  
  560.  
  561.      BOX       row1, col1, row2, col2, type
  562.  
  563.                This will draw a box.  Row1 and Col1 specify the
  564.                upper left corner position of the box, while Row2
  565.                and Col2 specify the lower right corner.  Type is
  566.                0 for single line box, and 1 for a double line
  567.                box.
  568.  
  569.                Trying to draw a box larger than the screen (8x40)
  570.                has unpredictable results.
  571.  
  572.  
  573.      CLICK
  574.  
  575.                Make the key click sound.
  576.  
  577.  
  578.      DIAL      "number"
  579.  
  580.                This will dial the "number" through the speaker. 
  581.                Valid characters for tones are: 0 1 2 3 4 5 6 7 8
  582.                9 A B C D * #.  The letters must be in uppercase.
  583.  
  584.  
  585.      DISPLAY   exp
  586.  
  587.                Set the Portfolio screen to Normal, Static or
  588.                Tracked.  0=Static, 1=Normal, 2=Tracked.  The mode
  589.                is only effective while in PBASIC.  Using this
  590.                statement might clear the screen depending on the
  591.                position of the cursor.
  592.  
  593.  
  594.      ERRWIN    row, col, "message"
  595.  
  596.                This will draw a box around the message and
  597.                display it at the specified row, col.  It will
  598.                then beep and wait for a keypress.  The text
  599.                underneath the message is left untouched.
  600.  
  601.                Trying to place the message outside the screen
  602.                (8x40) has unpredictable results.
  603.  
  604.  
  605.      GETDISPLAY
  606.  
  607.                This function will return the current display
  608.                mode.  See DISPLAY for details.
  609.  
  610.  
  611.      OFF
  612.  
  613.                This will turn the Portfolio off until the user
  614.                presses a key.  The program will continue
  615.                execution with the next statement.
  616.  
  617.  
  618.      PORT
  619.  
  620.                This function will return a 1 if running on a
  621.                Portfolio, a 0 if not.  Handy if you want to run
  622.                program on both machines without locking up the
  623.                PC.  WARNING: There is no positive way to identify
  624.                the Portfolio.  This functions checks to see if
  625.                the Interrupt 61h vector is pointing to 0000:0000. 
  626.                This is not normally used on the PC, but is on the
  627.                Portfolio.  If you are running a TSR that takes
  628.                over this vector, PORT will return 1.
  629.  
  630.  
  631.      REFRESH
  632.  
  633.                Copy video memory to the LCD controller.  Needed
  634.                for when you are doing direct write to screen
  635.                memory.
  636.  
  637.  
  638.      ROMVER
  639.  
  640.                This function will return the version number of
  641.                the Portfolio rom's.
  642.  
  643.  
  644.      SOUND     code, duration
  645.  
  646.                This will activate the tone generator.  Duration
  647.                is the length of tone in 10 msec intervals.  Tone
  648.                codes are displayed below.  These codes are taken
  649.                from the Atari Portfolio Technical Reference
  650.                Manual, copyrighted by the Atari Corporation.
  651.  
  652.                CODE      NOTE      Frequency (Hz)
  653.  
  654.                48        D#5       622.3
  655.                49        E5        659.3
  656.                50        F5        698.5
  657.                51        F#5       740.0
  658.                52        G5        784.0
  659.                53        G#5       830.6
  660.                54        A5        880.0
  661.                55        A#5       932.3
  662.                56        B5        987.8
  663.                57        C6        1046.5
  664.                58        C#6       1108.7
  665.                41        D6        1174.7
  666.                59        D#6       1244.5
  667.                60        E6        1318.5
  668.                61        F6        1396.9
  669.                14        F#6       1480.0
  670.                62        G6        1568.0
  671.                44        G#6       1661.2
  672.                63        A6        1760.0
  673.                 4        A#6       1864.7
  674.                 5        B6        1975.5
  675.                37        C7        2093.0
  676.                47        C#7       2217.5
  677.                 6        D7        2349.3
  678.                 7        D#7       2489.0
  679.  
  680.                Aside from these codes, other values will produce
  681.                sounds as well.
  682.  
  683.  
  684.      STATUS    exp
  685.  
  686.                This will enable or disable the Status line.  This
  687.                is the line that you see when you use the <LOCK>
  688.                key on the Portfolio.  0 for off, 1 for on.
  689.  
  690.  
  691.      TICK      exp
  692.  
  693.                Sets the Clock tick speed.  0 is Normal, 1 tick
  694.                every 128 seconds.  1 is Fast, 1 tick every
  695.                second.  1 uses much more power.
  696.  
  697.  
  698.      VCSRLIN
  699.  
  700.                Returns the current virtual cursor line.
  701.  
  702.  
  703.      VLOCATE   row,col
  704.  
  705.                Move the virtual cursor to row, col.  This
  706.                location will be at position 1,1 on the physical
  707.                screen.
  708.  
  709.  
  710.      VMOVE     dir, dis
  711.  
  712.                Move the screen in direction dir for dis number of
  713.                lines.  Works only in Static and Tracked modes. 
  714.                Same as using the ALT arrow keys.  Values for dir
  715.                are 1=Up,2=Down,3=Left,4=Right.
  716.  
  717.  
  718.      VPOS(exp)
  719.  
  720.                Returns the current virtual cursor column.  Exp is
  721.                a dummy expression.
  722.  
  723.  
  724. UPGRADE HISTORY
  725.  
  726.      Version 2.1    August 4, 1990
  727.  
  728.           New Statements: DATA, READ, RESTORE
  729.           New Functions : LOG
  730.           TRON invoked from command line switch -T
  731.           Adjusted the screen coordinates from 0,0 to 1,1 to
  732.                match GWBASIC.  While this will cause some
  733.                incompatibilities with previous versions of
  734.                PBASIC, it will make it more compatible with
  735.                GWBASIC.
  736.           Added INP to the documentation.
  737.           Added FRE to the documentation.
  738.           Installed Binary search for command checking.  Speed
  739.                increase about 40%.
  740.           One letter variable names are not checked in command
  741.                table.
  742.           Fixed the load routine to allow for no CR/LF at the end
  743.                of the file.
  744.           Fixed FIX function.
  745.           Fixed scientific constants.
  746.           Fixed power (^) function.
  747.  
  748.  
  749.      Version 2.0    July 27, 1990
  750.  
  751.           New Statements: LPRINT, PRINTER, FORMFEED, PRTSC, WAIT,
  752.                OUT, DIM
  753.           New Functions : LPOS, ATN, EXP, FIX, INT, COS, SIN,
  754.                SQR, TAN, TIMER, \, INP, FRE
  755.           New Portfolio Only : GETDISPLAY, DISPLAY, VLOCATE,
  756.                VMOVE, VPOS, VCSRLIN, ROMVER, PORT
  757.           200 variables, 8 significant characters.
  758.           <ALT-R> TSR to invoke BASIC from inside editor.
  759.           Program size limited to available memory.
  760.           All variables are now SINGLE PRECISION FLOATING POINT.
  761.           One Dimensional Floating Point Arrays.
  762.           Fixed FOR/NEXT looping with a negative step.
  763.           Fixed the use of FUNCTIONS in PRINT statements.
  764.           Fixed EOF error on Portfolio: Lockup if no END
  765.                statement.
  766.           Added extensive printer support.
  767.           DEFINT will now cause a syntax error.
  768.           RND was changed to make it MS compatible.
  769.           SWAP was make array compatible.
  770.           Fixed ... else "string" problem.
  771.           Added NEXT to the documentation.
  772.  
  773.  
  774.      Version 1.1    July 21, 1990
  775.  
  776.           New Statements: DEF SEG, POKE
  777.           New Functions : PEEK
  778.           New Portfolio Only : REFRESH, TICK, CLICK, STATUS
  779.           Automatically invoke Editor on Error.
  780.           Fixed ALARM problem: keystroke was going into buffer.
  781.           Fixed ON x GOTO/GOSUB problem: Offset line count by 1.
  782.           Improved Error Detection.
  783.           Allow REM in PRINT with preceding colon (:).
  784.           Implement the quote (') as a substitute for REM.
  785.           Fix PSET documentation to indicate ()'s.
  786.           Screen mode changes, return to original on error.
  787.           Allow for spaces as separator in PRINT.
  788.  
  789.      Version 1.0    July 14, 1990
  790.  
  791.           Initial release.
  792.  
  793.  
  794. TECHNICAL NOTES
  795.  
  796.           PBASIC is about 2000 lines of code was written in Turbo
  797.      C, version 2.0, compiled to an executable file just under
  798.      43k in size.  PBASIC was then compressed with LZEXE, version
  799.      0.91, to further reduce the size to about 30k.
  800.  
  801.           PBASIC will run on a regular PC, providing you do not
  802.      use any Portfolio specific statements.  If you have the
  803.      Portfolio Emulation software (I60, I61), you can use all the
  804.      features.
  805.  
  806.           PBASIC was developed on a Packard Bell 286 PC with 640k
  807.      of memory.  It was tested on the Atari Portfolio, ROM
  808.      version 1.052.
  809.  
  810.  
  811. BATCH CONSIDERATIONS
  812.  
  813.           If you are running PBASIC as a batch file, you can
  814.      access the ERRORLEVEL code generated upon exit.
  815.  
  816.                0 - Successful exit
  817.                1 - Program aborted
  818.                2 - STOP encountered
  819.  
  820.  
  821. FUTURE ENHANCEMENTS
  822.  
  823.      - Menus
  824.      - CHAINing programs 
  825.      - PBASIC compiler   
  826.      - Increase compatibility with Microsoft BASIC
  827.  
  828.  
  829.  
  830. THE FILES
  831.  
  832.      PBASIC.EXE          The Interpreter.
  833.      PBASIC.TXT          This file.
  834.      ALTR.COM            TSR to execute PBASIC from editor.
  835.      TEST.BAS            A program to exercise the interpreter. 
  836.                               Should not generate any errors.  It
  837.                               will run on a PC or Portfolio. 
  838.                               Take a look at it, it demos many of
  839.                               the features of the Portfolio Only
  840.                               routines.
  841.      DAYS.BAS            Sample programs.
  842.  
  843.      FIX0D.COM           TSR fix for Portfolio graphics rom.
  844.      FIX0D.TXT 
  845.  
  846.  
  847. ABOUT THE AUTHOR
  848.  
  849.      Mr. BJ Gleason is an Instructor at The American University
  850.      in the Computer Science and Information Systems Department. 
  851.      He has been programming for over a decade now.
  852.  
  853.  
  854. COMMENTS, BUGS AND IDEAS
  855.  
  856.      What features do you really need in PBASIC to make it more
  857.      useful on the Portfolio?  If you would like to see some new
  858.      features, contact me and I will try to accommodate you and
  859.      release a new version.
  860.  
  861.      Thanks to all those on GEnie and Compuserve for their bug
  862.      reports, suggestions and words of encouragement.  Without
  863.      their feedback, version 2.1 would have never seen the light
  864.      of day.  Keep those cards and letters coming!
  865.  
  866.  
  867. ADDRESS
  868.  
  869.      If you have an comments, suggestions or bug reports, you can
  870.      write to the author at:
  871.  
  872.  
  873.           BJ Gleason
  874.           The American University
  875.           CSIS  (Thin Air Labs)
  876.           4400 Massachusetts Avenue, N.W.
  877.           Washington, DC  20016
  878.  
  879.           Compuserve : 73337,2011
  880.           Genie      : BJGLEASON
  881.  
  882.      
  883.      This program and documentation is being placed into the
  884.      public domain by the author.  It can be copied and
  885.      distributed freely.  It can not be sold or used for
  886.      commercial purposes without permission.
  887.  
  888.      PBASIC version 2.1, Copyright 1990 by BJ Gleason.
  889.  
  890.      Portfolio, Atari, Microsoft, GWBASIC are trademarks of their
  891.      respective companies.
  892. ə